<?php

namespace Medicina\BackendBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Medicina\KernelBundle\Entity\Oficina;
use Medicina\BackendBundle\Form\OficinaType;

/**
 * Oficina controller.
 *
 */
class OficinaController extends Controller {

    /**
     * Lists all Oficina entities.
     *
     */
    public function indexAction() {
        $em = $this->getDoctrine()->getEntityManager();
       
        $entities = $em->getRepository('MedicinaKernelBundle:Oficina')->findAll();

        return $this->render('BackendBundle:Oficina:index.html.twig', array(
                    'entities' => $entities,
                    'delete_form' =>  $this->createDeleteForm()->createView()
                ));
    }

    /**
     * Finds and displays a Oficina entity.
     *
     */
    public function showAction($id) {
        $em = $this->getDoctrine()->getEntityManager();

        $entity = $em->getRepository('MedicinaKernelBundle:Oficina')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('No se ha encontrado la oficina solicitada');
        }

        $deleteForm = $this->createDeleteForm($id);

        return $this->render('BackendBundle:Oficina:show.html.twig', array(
                    'entity' => $entity,
                    'delete_form' => $deleteForm->createView(),
                ));
    }

    /**
     * Displays a form to create a new Oficina entity.
     *
     */
    public function newAction() {
        $entity = new Oficina();
        $form = $this->createForm(new OficinaType(), $entity);

        return $this->render('BackendBundle:Oficina:new.html.twig', array(
                    'entity' => $entity,
                    'form' => $form->createView()
                ));
    }

    /**
     * Creates a new Oficina entity.
     *
     */
    public function createAction() {
        $entity = new Oficina();
        $request = $this->getRequest();
        $form = $this->createForm(new OficinaType(), $entity);
        $form->bindRequest($request);

      //  if ($form->isValid()) {
            $em = $this->getDoctrine()->getEntityManager();
            try {
            $em->persist($entity);
            $em->flush();
                $this->get('session')->setFlash('notice', 'Se guardo la nueva oficina correctamente');

            return $this->redirect($this->generateUrl('oficina'));
        
        } catch (\PDOException $e) {
                $this->get('session')->setFlash('error', 'Ya existe una oficina con el código y/o nombre ingresado');
            
        return $this->render('BackendBundle:Oficina:new.html.twig', array(
                    'entity' => $entity,
                    'form' => $form->createView()
                ));
    }
    
    
  //  return $this->render('BackendBundle:Oficina:new.html.twig', array(
    //                'entity' => $entity,
      //              'form' => $form->createView()
        //        ));
    }

    /**
     * Displays a form to edit an existing Oficina entity.
     *
     */
    public function editAction($id) {
        $em = $this->getDoctrine()->getEntityManager();

        $entity = $em->getRepository('MedicinaKernelBundle:Oficina')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('No se ha encontrado la oficina solicitada');
        }

        $editForm = $this->createForm(new OficinaType(), $entity);

        return $this->render('BackendBundle:Oficina:edit.html.twig', array(
                    'entity' => $entity,
                    'form' => $editForm->createView(),
                ));
    }

    /**
     * Edits an existing Oficina entity.
     *
     */
    public function updateAction($id) {
        $em = $this->getDoctrine()->getEntityManager();

        $entity = $em->getRepository('MedicinaKernelBundle:Oficina')->find($id);

        if (!$entity) {
            throw $this->createNotFoundException('No se ha encontrado la oficina solicitada');
        }

        $editForm = $this->createForm(new OficinaType(), $entity);
        $deleteForm = $this->createDeleteForm($id);

        $request = $this->getRequest();

        $editForm->bindRequest($request);

     //   if ($editForm->isValid()) {
        try{
            $em->persist($entity);
            $em->flush();
               $this->get('session')->setFlash('notice', 'Se editaron los datos correctamente');

            return $this->redirect($this->generateUrl('oficina', array('id' => $id)));
                    } catch (\PDOException $e) {
                        $this->get('session')->setFlash('error', 'Ya existe una oficina con el código y/o nombre ingresado');

        return $this->render('BackendBundle:Oficina:edit.html.twig', array(
                    'entity' => $entity,
                    'form' => $editForm->createView(),
                    'delete_form' => $deleteForm->createView(),
                ));
    }
    }

    public function deleteAction($id) {
            $em = $this->getDoctrine()->getEntityManager();
            $entity = $em->getRepository('MedicinaKernelBundle:Oficina')->find($id);

            if (!$entity) {
                $ $this->get('session')->setFlash('error', 'No encontro la oficina');
            } else {
               try {
                    $distinguible = $entity->getNombre();
                    $em->remove($entity);
                    $em->flush();
                     $this->get('session')->setFlash('notice', 'Oficina   ' . $distinguible . ' se borro con exito');
                } catch (\PDOException $e) {
                    $this->get('session')->setFlash('error', 'No se puede borrar la  oficina' . $distinguible . ', esta siendo usada por un concurso o un usuario pertenece a ella');
               
             }

               
            }
        
        return $this->redirect($this->generateUrl('oficina'));
    }

    private function createDeleteForm() {
        return $this->createFormBuilder()->getForm();
    }

}
